#pragma once
#ifndef __G_RAY_3_H__
#define __G_RAY_3_H__

#include "GPlane.h"
#include "GDisk.h"
#include "GSphere.h"
#include "GVector3.h"
#include "GTriangle3.h"
#include "GBoxOriented.h"
#include "GBoxAligned.h"

#include "GUtilities/GTypes.h"

namespace GMath
{

	class GRay3
	{
	public:
		GVector3	Origin;
		GVector3	Direction;

					GRay3();
					GRay3(const GVector3& Origin, const GVector3& Direction);

		void		Create(const GVector3& Origin, const GVector3& Direction);

		void		Reflect(GRay3& Output, float T, const GVector3& Normal) const;
		bool		Refract(GRay3& Output, float T, const GVector3& Normal, float IndexEnter, float IndexLeave) const;

		GVector3	FindPoint(float T) const;
	
	};

}

#endif